/*
 * @Author: jack_yang98 1246900429@qq.com
 * @Date: 2024-08-03 15:27:07
 * @LastEditors: jack_yang98 1246900429@qq.com
 * @LastEditTime: 2024-08-03 22:11:01
 * @FilePath: /gateway/app/app_buffer.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef __APP_BUFFER_H__
#define __APP_BUFFER_H__

#include <pthread.h>

typedef struct app_buffer
{
    void *ptr;            // 缓存区指针
    int size;             // 缓存区总长度
    int start;            // 数据起始位置
    int len;              // 数据个数
    pthread_mutex_t lock; // Buffer锁
} Buffer;

/**
 * @description: 初始化一个缓存区
 * @param {Buffer} *buffer 缓存区的属性指针对象
 * @param {size} *size 缓存区的总长度
 * @return {*} 成功0 失败-1
 */
int App_Buffer_init(Buffer *buffer, int size);

/**
 * @description: 从Buffer中读取数据
 * @param {Buffer} *buffer 缓存区指针对象
 * @param {void} *buf   读出数据的指针
 * @param {int} len     读取的数据长度
 * @return {*} 成功返回读到的实际数据长度  失败-1
 */
int App_Buffer_read(Buffer *buffer, void *buf, int len);

/**
 * @description: 从Buffer中写入数据
 * @param {Buffer} *buffer 缓存区指针对象
 * @param {void} *buf   写入数据的指针
 * @param {int} len     写入的数据长度
 * @return {*}  成功0  失败-1
 */
int App_Buffer_write(Buffer *buffer, void *buf, int len);

/**
 * @description: 清除缓存区
 * @param {Buffer} *buffer 缓存区指针对象
 * @return {*}  成功0  失败-1
 */
int App_Buffer_close(Buffer *buffer);


#endif
